package 每日一题OJ;

import java.util.ArrayList;

/**
 * @author shy_black
 * @date 2019/4/12 17:39
 * @Description:
 * 题目描述
 * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数，
 * 打印能拼接出的所有数字中最小的一个。例如输入数组{3，32，321}，
 * 则打印出这三个数字能排成的最小数字为321323。
 *
 * 使用两层for循环嵌套，每次拿出arr数组的arr[i]+arrr[j],的String型值和arr[j]+arrr[i]String型
 * 比大小，将较小值的arr对象放入arr[i]中，依次循环
 * 最后循环将数组中的值转换为String进行追加。
 */
public class 把数组排成最小的数 {


    public String PrintMinNumber(int[] arr) {

        for(int i = 0;i < arr.length-1;i++) {
            for(int j = i+1;j < arr.length;j++) {
                String s1 = String.valueOf(arr[i])+String.valueOf(arr[j]);
                String s2 = String.valueOf(arr[j])+String.valueOf(arr[i]);

                int i1 = Integer.valueOf(s1);
                int i2 = Integer.valueOf(s2);
                if(i1 > i2) {
                    int t = arr[i];
                    arr[i] = arr[j];
                    arr[j] = t;
                }
            }
        }
        String result = "";
        for(int i = 0;i < arr.length;i++) {
            result = result + String.valueOf(arr[i]);
        }
        return result;
    }
}